package com.wsoft.system.service;

import com.github.pagehelper.PageInfo;
import com.wsoft.system.dto.MenuParam;
import com.wsoft.system.dto.SysMenuDto;
import com.wsoft.system.dto.SysMenuNode;
import com.wsoft.system.entity.SysMenuEntity;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 菜单表 服务类
 * </p>
 *
 * @author kyle
 * @since 2024年09月02日 09:04:57
 */
public interface ISysMenuService extends IService<SysMenuEntity> {
    /**
     * 创建后台菜单
     * @param dto
     * @return boolean
     */
    boolean insert(SysMenuDto dto);

    /**
     * 修改后台菜单
     * @param dto
     * @return boolean
     */
    boolean update(SysMenuDto dto);

    /**
     * 根据ID获取菜单详情
     * @param id
     * @return SysMenuEntity
     */
    SysMenuEntity getMenu(Long id);

    /**
     * 根据ID删除菜单
     * @param id
     * @return boolean
     */
    boolean delete(Long id);

    /**
     * 分页查询后台菜单
     * @param dto
     * @return PageInfo
     */
    PageInfo<SysMenuEntity> pageMenu(SysMenuDto dto);

    /**
     * 树形结构返回所有菜单列表
     * @return List<SysMenuNode>
     */
    List<SysMenuNode> treeList();

    /**
     * 根据用户id返回所有树形菜单列表
     * @param entities
     * @return List<SysMenuNode>
     */
    List<SysMenuNode> treeList(List<SysMenuEntity> entities);


}
